<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>decode_structured_light_pattern [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_inspection.html">Inspection</a> / <a href="toc_inspection_structuredlight.html">Structured Light</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">decode_structured_light_pattern</span><span data-if="c" style="display:none;">T_decode_structured_light_pattern</span><span data-if="cpp" style="display:none;">DecodeStructuredLightPattern</span><span data-if="dotnet" style="display:none;">DecodeStructuredLightPattern</span><span data-if="python" style="display:none;">decode_structured_light_pattern</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">decode_structured_light_pattern</span><span data-if="c" style="display:none;">T_decode_structured_light_pattern</span><span data-if="cpp" style="display:none;">DecodeStructuredLightPattern</span><span data-if="dotnet" style="display:none;">DecodeStructuredLightPattern</span><span data-if="python" style="display:none;">decode_structured_light_pattern</span></code> — Decode the camera images acquired with a structured light setup.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>decode_structured_light_pattern</b>(<a href="#CameraImages"><i>CameraImages</i></a> :  : <a href="#StructuredLightModel"><i>StructuredLightModel</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_decode_structured_light_pattern</b>(const Hobject <a href="#CameraImages"><i>CameraImages</i></a>, const Htuple <a href="#StructuredLightModel"><i>StructuredLightModel</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>DecodeStructuredLightPattern</b>(const HObject&amp; <a href="#CameraImages"><i>CameraImages</i></a>, const HTuple&amp; <a href="#StructuredLightModel"><i>StructuredLightModel</i></a>)</code></p>
<p>
<code>void <a href="HStructuredLightModel.html">HStructuredLightModel</a>::<b>DecodeStructuredLightPattern</b>(const HImage&amp; <a href="#CameraImages"><i>CameraImages</i></a>) const</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>DecodeStructuredLightPattern</b>(<a href="HObject.html">HObject</a> <a href="#CameraImages"><i>cameraImages</i></a>, <a href="HTuple.html">HTuple</a> <a href="#StructuredLightModel"><i>structuredLightModel</i></a>)</code></p>
<p>
<code>void <a href="HStructuredLightModel.html">HStructuredLightModel</a>.<b>DecodeStructuredLightPattern</b>(<a href="HImage.html">HImage</a> <a href="#CameraImages"><i>cameraImages</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>decode_structured_light_pattern</b>(<a href="#CameraImages"><i>camera_images</i></a>: HObject, <a href="#StructuredLightModel"><i>structured_light_model</i></a>: HHandle) -&gt; None</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">decode_structured_light_pattern</span><span data-if="c" style="display:none">decode_structured_light_pattern</span><span data-if="cpp" style="display:none">DecodeStructuredLightPattern</span><span data-if="com" style="display:none">DecodeStructuredLightPattern</span><span data-if="dotnet" style="display:none">DecodeStructuredLightPattern</span><span data-if="python" style="display:none">decode_structured_light_pattern</span></code> decodes the camera images
<a href="#CameraImages"><i><code><span data-if="hdevelop" style="display:inline">CameraImages</span><span data-if="c" style="display:none">CameraImages</span><span data-if="cpp" style="display:none">CameraImages</span><span data-if="com" style="display:none">CameraImages</span><span data-if="dotnet" style="display:none">cameraImages</span><span data-if="python" style="display:none">camera_images</span></code></i></a> that have been previously acquired with a structured
light setup. The correspondence images and other intermediate results that
are created by the decoding process are stored in the model
<a href="#StructuredLightModel"><i><code><span data-if="hdevelop" style="display:inline">StructuredLightModel</span><span data-if="c" style="display:none">StructuredLightModel</span><span data-if="cpp" style="display:none">StructuredLightModel</span><span data-if="com" style="display:none">StructuredLightModel</span><span data-if="dotnet" style="display:none">structuredLightModel</span><span data-if="python" style="display:none">structured_light_model</span></code></i></a> and can be accessed afterwards using the
operator <a href="get_structured_light_object.html"><code><span data-if="hdevelop" style="display:inline">get_structured_light_object</span><span data-if="c" style="display:none">get_structured_light_object</span><span data-if="cpp" style="display:none">GetStructuredLightObject</span><span data-if="com" style="display:none">GetStructuredLightObject</span><span data-if="dotnet" style="display:none">GetStructuredLightObject</span><span data-if="python" style="display:none">get_structured_light_object</span></code></a>.
</p>
<p>In the following, the decoding process is explained in detail:
</p>
<p>As mentioned in <a href="gen_structured_light_pattern.html"><code><span data-if="hdevelop" style="display:inline">gen_structured_light_pattern</span><span data-if="c" style="display:none">gen_structured_light_pattern</span><span data-if="cpp" style="display:none">GenStructuredLightPattern</span><span data-if="com" style="display:none">GenStructuredLightPattern</span><span data-if="dotnet" style="display:none">GenStructuredLightPattern</span><span data-if="python" style="display:none">gen_structured_light_pattern</span></code></a> the first purpose is to
find out whether a pixel is in a region where a light stripe is reflected or
where a dark stripe is reflected. To simplify this decision process the
normalization images are used and a locally varying threshold is
determined that is able to cope with objects of varying reflectance and
lighting conditions.
During the decoding of the acquired camera images all Gray code images are
then compared with the previously calculated threshold. A pixel within the
image is classified as bright if its gray value is greater or
equal this threshold.
</p>
<p>Furthermore, the pattern region is segmented during the decoding process.
The segmentation is controlled by the parameter
<i><span data-if="hdevelop" style="display:inline">'min_gray_difference'</span><span data-if="c" style="display:none">"min_gray_difference"</span><span data-if="cpp" style="display:none">"min_gray_difference"</span><span data-if="com" style="display:none">"min_gray_difference"</span><span data-if="dotnet" style="display:none">"min_gray_difference"</span><span data-if="python" style="display:none">"min_gray_difference"</span></i>
(see <a href="set_structured_light_model_param.html"><code><span data-if="hdevelop" style="display:inline">set_structured_light_model_param</span><span data-if="c" style="display:none">set_structured_light_model_param</span><span data-if="cpp" style="display:none">SetStructuredLightModelParam</span><span data-if="com" style="display:none">SetStructuredLightModelParam</span><span data-if="dotnet" style="display:none">SetStructuredLightModelParam</span><span data-if="python" style="display:none">set_structured_light_model_param</span></code></a>).
</p>
<p>Assuming that n Gray code images have been processed, we get a n-bit binary
code for each pixel. From this sequence the row and column
coordinates up to <span title="1" style="vertical-align:-0.373094em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="9.283em" height="1.12304em" viewBox="0 0 148.527924 17.968719">
<!-- Original BoundingBox: -74.263962 -8.984360 74.263962 8.984360 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_50">
      <path style="fill-rule: evenodd;" d="M127.000000 -77.000000L233.000000 -180.000000C389.000000 -318.000000,449.000000 -372.000000,449.000000 -472.000000C449.000000 -586.000000,359.000000 -666.000000,237.000000 -666.000000C124.000000 -666.000000,50.000000 -574.000000,50.000000 -485.000000C50.000000 -429.000000,100.000000 -429.000000,103.000000 -429.000000C120.000000 -429.000000,155.000000 -441.000000,155.000000 -482.000000C155.000000 -508.000000,137.000000 -534.000000,102.000000 -534.000000C94.000000 -534.000000,92.000000 -534.000000,89.000000 -533.000000C112.000000 -598.000000,166.000000 -635.000000,224.000000 -635.000000C315.000000 -635.000000,358.000000 -554.000000,358.000000 -472.000000C358.000000 -392.000000,308.000000 -313.000000,253.000000 -251.000000L61.000000 -37.000000C50.000000 -26.000000,50.000000 -24.000000,50.000000 -0.000000L421.000000 -0.000000L449.000000 -174.000000L424.000000 -174.000000C419.000000 -144.000000,412.000000 -100.000000,402.000000 -85.000000C395.000000 -77.000000,329.000000 -77.000000,307.000000 -77.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_61">
      <path style="fill-rule: evenodd;" d="M439.000000 -712.000000C444.000000 -725.000000,444.000000 -729.000000,444.000000 -730.000000C444.000000 -741.000000,435.000000 -750.000000,424.000000 -750.000000C417.000000 -750.000000,410.000000 -747.000000,407.000000 -741.000000L60.000000 212.000000C55.000000 225.000000,55.000000 229.000000,55.000000 230.000000C55.000000 241.000000,64.000000 250.000000,75.000000 250.000000C88.000000 250.000000,91.000000 243.000000,97.000000 226.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmsy7_48">
      <path style="fill-rule: evenodd;" d="M290.000000 -472.000000C298.000000 -489.000000,299.000000 -497.000000,299.000000 -504.000000C299.000000 -535.000000,271.000000 -559.000000,240.000000 -559.000000C202.000000 -559.000000,190.000000 -528.000000,185.000000 -512.000000L53.000000 -79.000000C52.000000 -77.000000,48.000000 -64.000000,48.000000 -63.000000C48.000000 -51.000000,79.000000 -41.000000,87.000000 -41.000000C94.000000 -41.000000,95.000000 -43.000000,102.000000 -58.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_100">
      <path style="fill-rule: evenodd;" d="M557.000000 -669.000000C558.000000 -672.000000,560.000000 -680.000000,560.000000 -682.000000C560.000000 -691.000000,554.000000 -694.000000,546.000000 -694.000000C543.000000 -694.000000,533.000000 -693.000000,530.000000 -692.000000L431.000000 -684.000000C419.000000 -683.000000,408.000000 -682.000000,408.000000 -663.000000C408.000000 -652.000000,418.000000 -652.000000,432.000000 -652.000000C480.000000 -652.000000,482.000000 -645.000000,482.000000 -635.000000C482.000000 -632.000000,479.000000 -619.000000,479.000000 -618.000000L421.000000 -384.000000C406.000000 -415.000000,379.000000 -442.000000,337.000000 -442.000000C226.000000 -442.000000,108.000000 -290.000000,108.000000 -144.000000C108.000000 -59.000000,154.000000 11.000000,229.000000 11.000000C265.000000 11.000000,309.000000 -10.000000,349.000000 -59.000000C360.000000 -10.000000,397.000000 11.000000,432.000000 11.000000C469.000000 11.000000,490.000000 -14.000000,505.000000 -45.000000C523.000000 -83.000000,535.000000 -141.000000,535.000000 -143.000000C535.000000 -153.000000,527.000000 -153.000000,520.000000 -153.000000C508.000000 -153.000000,507.000000 -152.000000,501.000000 -130.000000C487.000000 -74.000000,468.000000 -11.000000,434.000000 -11.000000C408.000000 -11.000000,408.000000 -38.000000,408.000000 -52.000000C408.000000 -59.000000,408.000000 -74.000000,414.000000 -98.000000M355.000000 -122.000000C347.000000 -91.000000,286.000000 -11.000000,231.000000 -11.000000C184.000000 -11.000000,176.000000 -70.000000,176.000000 -100.000000C176.000000 -150.000000,207.000000 -267.000000,225.000000 -309.000000C250.000000 -370.000000,296.000000 -420.000000,337.000000 -420.000000C345.000000 -420.000000,368.000000 -419.000000,386.000000 -391.000000C396.000000 -375.000000,406.000000 -346.000000,406.000000 -327.000000C406.000000 -324.000000,405.000000 -320.000000,403.000000 -314.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_101">
      <path style="fill-rule: evenodd;" d="M239.000000 -231.000000C269.000000 -231.000000,336.000000 -234.000000,384.000000 -253.000000C463.000000 -285.000000,463.000000 -350.000000,463.000000 -357.000000C463.000000 -403.000000,426.000000 -442.000000,362.000000 -442.000000C257.000000 -442.000000,114.000000 -341.000000,114.000000 -164.000000C114.000000 -74.000000,162.000000 11.000000,257.000000 11.000000C385.000000 11.000000,468.000000 -89.000000,468.000000 -104.000000C468.000000 -109.000000,460.000000 -120.000000,452.000000 -120.000000C448.000000 -120.000000,447.000000 -119.000000,439.000000 -109.000000C365.000000 -15.000000,276.000000 -11.000000,259.000000 -11.000000C194.000000 -11.000000,183.000000 -82.000000,183.000000 -121.000000C183.000000 -159.000000,193.000000 -204.000000,200.000000 -231.000000M206.000000 -253.000000C249.000000 -417.000000,352.000000 -420.000000,362.000000 -420.000000C402.000000 -420.000000,425.000000 -393.000000,425.000000 -359.000000C425.000000 -253.000000,260.000000 -253.000000,227.000000 -253.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_104">
      <path style="fill-rule: evenodd;" d="M303.000000 -669.000000C304.000000 -672.000000,306.000000 -680.000000,306.000000 -682.000000C306.000000 -691.000000,300.000000 -694.000000,292.000000 -694.000000C289.000000 -694.000000,279.000000 -693.000000,276.000000 -692.000000L177.000000 -684.000000C165.000000 -683.000000,154.000000 -682.000000,154.000000 -663.000000C154.000000 -652.000000,164.000000 -652.000000,178.000000 -652.000000C226.000000 -652.000000,228.000000 -645.000000,228.000000 -635.000000C228.000000 -632.000000,225.000000 -619.000000,225.000000 -618.000000L77.000000 -28.000000C76.000000 -26.000000,75.000000 -17.000000,75.000000 -15.000000C75.000000 -4.000000,84.000000 11.000000,103.000000 11.000000C124.000000 11.000000,137.000000 -6.000000,140.000000 -17.000000C144.000000 -32.000000,176.000000 -162.000000,183.000000 -190.000000C188.000000 -212.000000,194.000000 -233.000000,199.000000 -255.000000C208.000000 -291.000000,209.000000 -293.000000,227.000000 -325.000000C247.000000 -357.000000,290.000000 -420.000000,360.000000 -420.000000C404.000000 -420.000000,406.000000 -375.000000,406.000000 -354.000000C406.000000 -292.000000,362.000000 -173.000000,348.000000 -133.000000C335.000000 -99.000000,332.000000 -90.000000,332.000000 -69.000000C332.000000 -25.000000,360.000000 11.000000,408.000000 11.000000C501.000000 11.000000,535.000000 -138.000000,535.000000 -143.000000C535.000000 -153.000000,527.000000 -153.000000,520.000000 -153.000000C507.000000 -153.000000,507.000000 -151.000000,503.000000 -136.000000C495.000000 -109.000000,468.000000 -11.000000,410.000000 -11.000000C389.000000 -11.000000,388.000000 -26.000000,388.000000 -40.000000C388.000000 -65.000000,398.000000 -91.000000,406.000000 -115.000000C426.000000 -168.000000,467.000000 -280.000000,467.000000 -338.000000C467.000000 -420.000000,412.000000 -442.000000,363.000000 -442.000000C296.000000 -442.000000,261.000000 -407.000000,230.000000 -377.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_105">
      <path style="fill-rule: evenodd;" d="M331.000000 -143.000000C331.000000 -153.000000,323.000000 -153.000000,316.000000 -153.000000C303.000000 -153.000000,303.000000 -151.000000,299.000000 -136.000000C291.000000 -107.000000,264.000000 -11.000000,206.000000 -11.000000C198.000000 -11.000000,184.000000 -12.000000,184.000000 -39.000000C184.000000 -65.000000,197.000000 -98.000000,210.000000 -135.000000L274.000000 -306.000000C284.000000 -335.000000,286.000000 -343.000000,286.000000 -362.000000C286.000000 -417.000000,248.000000 -442.000000,211.000000 -442.000000C117.000000 -442.000000,83.000000 -293.000000,83.000000 -288.000000C83.000000 -278.000000,93.000000 -278.000000,98.000000 -278.000000C111.000000 -278.000000,112.000000 -280.000000,116.000000 -294.000000C125.000000 -327.000000,151.000000 -420.000000,209.000000 -420.000000C220.000000 -420.000000,231.000000 -415.000000,231.000000 -392.000000C231.000000 -368.000000,220.000000 -339.000000,213.000000 -320.000000L183.000000 -237.000000C170.000000 -204.000000,158.000000 -171.000000,146.000000 -138.000000C132.000000 -100.000000,128.000000 -89.000000,128.000000 -69.000000C128.000000 -30.000000,152.000000 11.000000,204.000000 11.000000C298.000000 11.000000,331.000000 -139.000000,331.000000 -143.000000M326.000000 -623.000000C326.000000 -648.000000,306.000000 -656.000000,292.000000 -656.000000C271.000000 -656.000000,244.000000 -636.000000,244.000000 -608.000000C244.000000 -583.000000,264.000000 -575.000000,278.000000 -575.000000C298.000000 -575.000000,326.000000 -594.000000,326.000000 -623.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_109">
      <path style="fill-rule: evenodd;" d="M230.000000 -175.000000C235.000000 -197.000000,241.000000 -218.000000,246.000000 -240.000000C259.000000 -289.000000,259.000000 -291.000000,271.000000 -312.000000C300.000000 -362.000000,343.000000 -420.000000,412.000000 -420.000000C458.000000 -420.000000,458.000000 -369.000000,458.000000 -354.000000C458.000000 -327.000000,451.000000 -298.000000,449.000000 -289.000000L384.000000 -29.000000C382.000000 -23.000000,381.000000 -18.000000,381.000000 -15.000000C381.000000 -4.000000,389.000000 11.000000,409.000000 11.000000C421.000000 11.000000,438.000000 4.000000,445.000000 -15.000000L485.000000 -175.000000C490.000000 -197.000000,496.000000 -218.000000,501.000000 -240.000000C514.000000 -289.000000,514.000000 -291.000000,526.000000 -312.000000C555.000000 -362.000000,598.000000 -420.000000,667.000000 -420.000000C713.000000 -420.000000,713.000000 -369.000000,713.000000 -354.000000C713.000000 -292.000000,669.000000 -173.000000,655.000000 -133.000000C642.000000 -99.000000,639.000000 -90.000000,639.000000 -69.000000C639.000000 -25.000000,667.000000 11.000000,715.000000 11.000000C808.000000 11.000000,842.000000 -138.000000,842.000000 -143.000000C842.000000 -153.000000,834.000000 -153.000000,827.000000 -153.000000C814.000000 -153.000000,814.000000 -151.000000,810.000000 -136.000000C802.000000 -109.000000,775.000000 -11.000000,717.000000 -11.000000C696.000000 -11.000000,695.000000 -26.000000,695.000000 -40.000000C695.000000 -65.000000,705.000000 -91.000000,713.000000 -115.000000C733.000000 -168.000000,774.000000 -280.000000,774.000000 -338.000000C774.000000 -422.000000,716.000000 -442.000000,669.000000 -442.000000C599.000000 -442.000000,549.000000 -398.000000,519.000000 -354.000000C511.000000 -423.000000,459.000000 -442.000000,414.000000 -442.000000C354.000000 -442.000000,305.000000 -409.000000,271.000000 -363.000000C264.000000 -412.000000,230.000000 -442.000000,187.000000 -442.000000C151.000000 -442.000000,131.000000 -419.000000,115.000000 -389.000000C96.000000 -349.000000,83.000000 -290.000000,83.000000 -288.000000C83.000000 -278.000000,93.000000 -278.000000,98.000000 -278.000000C111.000000 -278.000000,112.000000 -279.000000,117.000000 -301.000000C135.000000 -371.000000,154.000000 -420.000000,185.000000 -420.000000C211.000000 -420.000000,211.000000 -391.000000,211.000000 -380.000000C211.000000 -364.000000,208.000000 -345.000000,204.000000 -329.000000L129.000000 -29.000000C127.000000 -23.000000,126.000000 -18.000000,126.000000 -15.000000C126.000000 -4.000000,134.000000 11.000000,154.000000 11.000000C166.000000 11.000000,183.000000 4.000000,190.000000 -15.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_110">
      <path style="fill-rule: evenodd;" d="M230.000000 -175.000000C235.000000 -197.000000,241.000000 -218.000000,246.000000 -240.000000C259.000000 -291.000000,259.000000 -292.000000,276.000000 -321.000000C290.000000 -345.000000,335.000000 -420.000000,411.000000 -420.000000C455.000000 -420.000000,457.000000 -375.000000,457.000000 -354.000000C457.000000 -292.000000,413.000000 -173.000000,399.000000 -133.000000C386.000000 -99.000000,383.000000 -90.000000,383.000000 -69.000000C383.000000 -25.000000,411.000000 11.000000,459.000000 11.000000C552.000000 11.000000,586.000000 -138.000000,586.000000 -143.000000C586.000000 -153.000000,578.000000 -153.000000,571.000000 -153.000000C558.000000 -153.000000,558.000000 -151.000000,554.000000 -136.000000C546.000000 -109.000000,519.000000 -11.000000,461.000000 -11.000000C440.000000 -11.000000,439.000000 -26.000000,439.000000 -40.000000C439.000000 -65.000000,449.000000 -91.000000,457.000000 -115.000000C477.000000 -168.000000,518.000000 -280.000000,518.000000 -338.000000C518.000000 -420.000000,463.000000 -442.000000,414.000000 -442.000000C332.000000 -442.000000,284.000000 -382.000000,271.000000 -363.000000C264.000000 -412.000000,230.000000 -442.000000,187.000000 -442.000000C151.000000 -442.000000,131.000000 -419.000000,115.000000 -389.000000C96.000000 -349.000000,83.000000 -290.000000,83.000000 -288.000000C83.000000 -278.000000,93.000000 -278.000000,98.000000 -278.000000C111.000000 -278.000000,112.000000 -279.000000,117.000000 -301.000000C135.000000 -371.000000,154.000000 -420.000000,185.000000 -420.000000C211.000000 -420.000000,211.000000 -391.000000,211.000000 -380.000000C211.000000 -364.000000,208.000000 -345.000000,204.000000 -329.000000L129.000000 -29.000000C127.000000 -23.000000,126.000000 -18.000000,126.000000 -15.000000C126.000000 -4.000000,134.000000 11.000000,154.000000 11.000000C166.000000 11.000000,183.000000 4.000000,190.000000 -15.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_112">
      <path style="fill-rule: evenodd;" d="M90.000000 128.000000C82.000000 159.000000,74.000000 162.000000,35.000000 163.000000C26.000000 163.000000,14.000000 163.000000,14.000000 182.000000C14.000000 189.000000,19.000000 194.000000,26.000000 194.000000L110.000000 194.000000L53.000000 194.000000L82.000000 191.000000L110.000000 191.000000L142.000000 191.000000L176.000000 194.000000L207.000000 194.000000C213.000000 194.000000,226.000000 194.000000,226.000000 175.000000C226.000000 163.000000,216.000000 163.000000,202.000000 163.000000C151.000000 163.000000,151.000000 157.000000,151.000000 147.000000C151.000000 141.000000,158.000000 115.000000,162.000000 99.000000L198.000000 -47.000000C205.000000 -30.000000,230.000000 11.000000,282.000000 11.000000C391.000000 11.000000,510.000000 -137.000000,510.000000 -286.000000C510.000000 -393.000000,450.000000 -442.000000,390.000000 -442.000000C341.000000 -442.000000,298.000000 -406.000000,269.000000 -372.000000C257.000000 -430.000000,212.000000 -442.000000,187.000000 -442.000000C151.000000 -442.000000,131.000000 -419.000000,115.000000 -389.000000C96.000000 -349.000000,83.000000 -290.000000,83.000000 -288.000000C83.000000 -278.000000,93.000000 -278.000000,98.000000 -278.000000C111.000000 -278.000000,112.000000 -279.000000,117.000000 -301.000000C135.000000 -371.000000,154.000000 -420.000000,185.000000 -420.000000C211.000000 -420.000000,211.000000 -391.000000,211.000000 -380.000000C211.000000 -374.000000,211.000000 -358.000000,204.000000 -330.000000M263.000000 -307.000000C271.000000 -341.000000,333.000000 -420.000000,388.000000 -420.000000C433.000000 -420.000000,443.000000 -363.000000,443.000000 -331.000000C443.000000 -289.000000,416.000000 -170.000000,387.000000 -106.000000C375.000000 -81.000000,332.000000 -11.000000,281.000000 -11.000000C223.000000 -11.000000,213.000000 -96.000000,213.000000 -104.000000C213.000000 -107.000000,214.000000 -110.000000,216.000000 -118.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_114">
      <path style="fill-rule: evenodd;" d="M258.000000 -288.000000C259.000000 -291.000000,304.000000 -420.000000,390.000000 -420.000000C395.000000 -420.000000,423.000000 -420.000000,443.000000 -406.000000C408.000000 -395.000000,405.000000 -363.000000,405.000000 -358.000000C405.000000 -345.000000,414.000000 -326.000000,440.000000 -326.000000C458.000000 -326.000000,489.000000 -340.000000,489.000000 -379.000000C489.000000 -431.000000,424.000000 -442.000000,391.000000 -442.000000C322.000000 -442.000000,286.000000 -392.000000,270.000000 -370.000000C259.000000 -423.000000,220.000000 -442.000000,187.000000 -442.000000C151.000000 -442.000000,131.000000 -419.000000,115.000000 -389.000000C96.000000 -349.000000,83.000000 -290.000000,83.000000 -288.000000C83.000000 -278.000000,93.000000 -278.000000,98.000000 -278.000000C111.000000 -278.000000,112.000000 -279.000000,117.000000 -301.000000C135.000000 -371.000000,154.000000 -420.000000,185.000000 -420.000000C211.000000 -420.000000,211.000000 -391.000000,211.000000 -380.000000C211.000000 -364.000000,208.000000 -345.000000,204.000000 -329.000000L129.000000 -29.000000C127.000000 -23.000000,126.000000 -18.000000,126.000000 -15.000000C126.000000 -4.000000,134.000000 11.000000,154.000000 11.000000C184.000000 11.000000,191.000000 -18.000000,193.000000 -26.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_115">
      <path style="fill-rule: evenodd;" d="M247.000000 -197.000000C291.000000 -187.000000,336.000000 -177.000000,336.000000 -123.000000C336.000000 -91.000000,309.000000 -11.000000,206.000000 -11.000000C184.000000 -11.000000,126.000000 -16.000000,110.000000 -67.000000C161.000000 -72.000000,161.000000 -114.000000,161.000000 -116.000000C161.000000 -135.000000,148.000000 -148.000000,127.000000 -148.000000C104.000000 -148.000000,76.000000 -131.000000,76.000000 -86.000000C76.000000 -25.000000,134.000000 11.000000,205.000000 11.000000C355.000000 11.000000,393.000000 -111.000000,393.000000 -157.000000C393.000000 -244.000000,315.000000 -262.000000,274.000000 -271.000000C246.000000 -277.000000,210.000000 -285.000000,210.000000 -328.000000C210.000000 -352.000000,231.000000 -420.000000,311.000000 -420.000000C338.000000 -420.000000,375.000000 -410.000000,386.000000 -371.000000C354.000000 -367.000000,346.000000 -340.000000,346.000000 -330.000000C346.000000 -319.000000,352.000000 -302.000000,376.000000 -302.000000C393.000000 -302.000000,419.000000 -314.000000,419.000000 -357.000000C419.000000 -403.000000,378.000000 -442.000000,312.000000 -442.000000C195.000000 -442.000000,154.000000 -346.000000,154.000000 -294.000000C154.000000 -217.000000,219.000000 -203.000000,247.000000 -197.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_116">
      <path style="fill-rule: evenodd;" d="M260.000000 -400.000000L345.000000 -400.000000C362.000000 -400.000000,373.000000 -400.000000,373.000000 -419.000000C373.000000 -431.000000,364.000000 -431.000000,348.000000 -431.000000L268.000000 -431.000000L305.000000 -579.000000C309.000000 -593.000000,309.000000 -595.000000,309.000000 -600.000000C309.000000 -621.000000,292.000000 -626.000000,282.000000 -626.000000C257.000000 -626.000000,247.000000 -605.000000,243.000000 -590.000000L204.000000 -431.000000L119.000000 -431.000000C102.000000 -431.000000,91.000000 -431.000000,91.000000 -412.000000C91.000000 -400.000000,100.000000 -400.000000,116.000000 -400.000000L196.000000 -400.000000L124.000000 -113.000000C123.000000 -109.000000,119.000000 -93.000000,119.000000 -79.000000C119.000000 -29.000000,152.000000 11.000000,204.000000 11.000000C305.000000 11.000000,356.000000 -138.000000,356.000000 -143.000000C356.000000 -153.000000,348.000000 -153.000000,341.000000 -153.000000C329.000000 -153.000000,329.000000 -152.000000,321.000000 -134.000000C303.000000 -86.000000,263.000000 -11.000000,206.000000 -11.000000C179.000000 -11.000000,179.000000 -36.000000,179.000000 -52.000000C179.000000 -59.000000,179.000000 -75.000000,186.000000 -103.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmti10_119">
      <path style="fill-rule: evenodd;" d="M380.000000 -168.000000C373.000000 -140.000000,372.000000 -119.000000,372.000000 -105.000000C372.000000 -94.000000,341.000000 -11.000000,288.000000 -11.000000C218.000000 -11.000000,218.000000 -85.000000,218.000000 -98.000000C218.000000 -152.000000,244.000000 -226.000000,275.000000 -308.000000C282.000000 -327.000000,287.000000 -342.000000,287.000000 -361.000000C287.000000 -411.000000,254.000000 -442.000000,211.000000 -442.000000C118.000000 -442.000000,83.000000 -294.000000,83.000000 -288.000000C83.000000 -278.000000,93.000000 -278.000000,98.000000 -278.000000C111.000000 -278.000000,112.000000 -280.000000,116.000000 -294.000000C124.000000 -325.000000,151.000000 -420.000000,209.000000 -420.000000C220.000000 -420.000000,231.000000 -417.000000,231.000000 -391.000000C231.000000 -367.000000,221.000000 -340.000000,207.000000 -301.000000C157.000000 -165.000000,157.000000 -139.000000,157.000000 -112.000000C157.000000 -78.000000,165.000000 -44.000000,191.000000 -20.000000C223.000000 8.000000,268.000000 11.000000,285.000000 11.000000C317.000000 11.000000,352.000000 -2.000000,382.000000 -53.000000C397.000000 -16.000000,437.000000 11.000000,496.000000 11.000000C556.000000 11.000000,598.000000 -30.000000,628.000000 -101.000000C658.000000 -169.000000,697.000000 -323.000000,697.000000 -376.000000C697.000000 -411.000000,685.000000 -442.000000,656.000000 -442.000000C633.000000 -442.000000,608.000000 -419.000000,608.000000 -396.000000C608.000000 -383.000000,615.000000 -376.000000,621.000000 -369.000000C645.000000 -343.000000,648.000000 -311.000000,648.000000 -290.000000C648.000000 -250.000000,616.000000 -145.000000,599.000000 -104.000000C577.000000 -52.000000,545.000000 -11.000000,499.000000 -11.000000C449.000000 -11.000000,433.000000 -52.000000,433.000000 -94.000000C433.000000 -103.000000,434.000000 -127.000000,445.000000 -171.000000L487.000000 -339.000000C493.000000 -361.000000,503.000000 -401.000000,503.000000 -405.000000C503.000000 -416.000000,495.000000 -431.000000,475.000000 -431.000000C446.000000 -431.000000,439.000000 -404.000000,437.000000 -396.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHptmr8r_95">
      <path style="fill-rule: evenodd;" d="M500.000000 125.000000L500.000000 75.000000L0.000000 75.000000L0.000000 125.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.752029 6.214539)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy7_48"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,5.224045 11.999207)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmti10_109"></use>
    <use xlink:href="#GLYPHcmti10_105" x="8.177863"></use>
    <use xlink:href="#GLYPHcmti10_110" x="11.244558"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,33.332794 11.999207)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHptmr8r_95"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,41.302917 11.999207)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmti10_115"></use>
    <use xlink:href="#GLYPHcmti10_116" x="4.088932"></use>
    <use xlink:href="#GLYPHcmti10_114" x="7.411178"></use>
    <use xlink:href="#GLYPHcmti10_105" x="11.627877"></use>
    <use xlink:href="#GLYPHcmti10_112" x="14.694572"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,72.058548 11.999207)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmti10_101"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,80.588837 11.999207)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHptmr8r_95"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,88.558929 11.999207)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmti10_119"></use>
    <use xlink:href="#GLYPHcmti10_105" x="6.644508"></use>
    <use xlink:href="#GLYPHcmti10_100" x="9.711203"></use>
    <use xlink:href="#GLYPHcmti10_116" x="14.822371"></use>
    <use xlink:href="#GLYPHcmti10_104" x="18.144617"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,126.851562 6.214539)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy7_48"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,131.323746 11.999207)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_61"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,139.293839 11.999207)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_50"></use>
  </g>
</svg></span> of
the monitor can be derived.
</p>
<p>If the <a href="#StructuredLightModel"><i><code><span data-if="hdevelop" style="display:inline">StructuredLightModel</span><span data-if="c" style="display:none">StructuredLightModel</span><span data-if="cpp" style="display:none">StructuredLightModel</span><span data-if="com" style="display:none">StructuredLightModel</span><span data-if="dotnet" style="display:none">structuredLightModel</span><span data-if="python" style="display:none">structured_light_model</span></code></i></a> is a hybrid system consisting not only
of Gray code images but also of phase shift images
(see <a href="gen_structured_light_pattern.html"><code><span data-if="hdevelop" style="display:inline">gen_structured_light_pattern</span><span data-if="c" style="display:none">gen_structured_light_pattern</span><span data-if="cpp" style="display:none">GenStructuredLightPattern</span><span data-if="com" style="display:none">GenStructuredLightPattern</span><span data-if="dotnet" style="display:none">GenStructuredLightPattern</span><span data-if="python" style="display:none">gen_structured_light_pattern</span></code></a>), the next step is to decode the
latter ones. The result is a subpixel-precise correspondence image between
the monitor coordinates and the camera coordinates that contains the
information which camera pixel observes which monitor pixel.
</p>
<p>If the <i><span data-if="hdevelop" style="display:inline">'pattern_type'</span><span data-if="c" style="display:none">"pattern_type"</span><span data-if="cpp" style="display:none">"pattern_type"</span><span data-if="com" style="display:none">"pattern_type"</span><span data-if="dotnet" style="display:none">"pattern_type"</span><span data-if="python" style="display:none">"pattern_type"</span></i> of the <a href="#StructuredLightModel"><i><code><span data-if="hdevelop" style="display:inline">StructuredLightModel</span><span data-if="c" style="display:none">StructuredLightModel</span><span data-if="cpp" style="display:none">StructuredLightModel</span><span data-if="com" style="display:none">StructuredLightModel</span><span data-if="dotnet" style="display:none">structuredLightModel</span><span data-if="python" style="display:none">structured_light_model</span></code></i></a> is set to
<i><span data-if="hdevelop" style="display:inline">'single_stripe'</span><span data-if="c" style="display:none">"single_stripe"</span><span data-if="cpp" style="display:none">"single_stripe"</span><span data-if="com" style="display:none">"single_stripe"</span><span data-if="dotnet" style="display:none">"single_stripe"</span><span data-if="python" style="display:none">"single_stripe"</span></i>, the first step in the decoding process is to
decide which single stripe shed its light on a camera pixel. The Gray code
sequence and phase are then used to refine the position within the
found single stripe.
</p>
<p>In real world setups it may occur that the detected Gray code sequence of a
pixel is wrong. This can then lead to values in the correspondence
images which represent monitor rows or columns larger than the monitor width
and height. To avoid these problems, the last step of the decoding process is
to remove these values from the correspondence images.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<p>This operator modifies the state of the following input parameter:</p>
<ul><li><a href="#StructuredLightModel"><span data-if="hdevelop" style="display:inline">StructuredLightModel</span><span data-if="c" style="display:none">StructuredLightModel</span><span data-if="cpp" style="display:none">StructuredLightModel</span><span data-if="com" style="display:none">StructuredLightModel</span><span data-if="dotnet" style="display:none">structuredLightModel</span><span data-if="python" style="display:none">structured_light_model</span></a></li></ul>
<p>During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="CameraImages" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CameraImages</span><span data-if="c" style="display:none">CameraImages</span><span data-if="cpp" style="display:none">CameraImages</span><span data-if="com" style="display:none">CameraImages</span><span data-if="dotnet" style="display:none">cameraImages</span><span data-if="python" style="display:none">camera_images</span></code></b> (input_object)  </span><span>(multichannel-)image(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / uint2)</span>
</div>
<p class="pardesc">Acquired camera images.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="StructuredLightModel" class="parname"><b><code><span data-if="hdevelop" style="display:inline">StructuredLightModel</span><span data-if="c" style="display:none">StructuredLightModel</span><span data-if="cpp" style="display:none">StructuredLightModel</span><span data-if="com" style="display:none">StructuredLightModel</span><span data-if="dotnet" style="display:none">structuredLightModel</span><span data-if="python" style="display:none">structured_light_model</span></code></b> (input_control, state is modified)  </span><span>structured_light_model <code>→</code> <span data-if="dotnet" style="display:none"><a href="HStructuredLightModel.html">HStructuredLightModel</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the structured light model.</p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
* Create the model
create_structured_light_model ('deflectometry', StructuredLightModel)
* Set the size of the monitor
set_structured_light_model_param (StructuredLightModel, \
                                  'pattern_width', 1600)
set_structured_light_model_param (StructuredLightModel, \
                                  'pattern_height', 1200)
* Set the smallest width of the stripes in the pattern
set_structured_light_model_param (StructuredLightModel, \
                                  'min_stripe_width', 8)
* Generate the patterns to project
gen_structured_light_pattern (PatternImages, StructuredLightModel)
* Set the expected black/white contrast in the region of interest
set_structured_light_model_param (StructuredLightModel, \
                                  'min_gray_difference', 70)
* Decode the camera images
decode_structured_light_pattern (CameraImages, StructuredLightModel)
* Get the computed correspondences and defects
get_structured_light_object (CorrespondenceImages, StructuredLightModel, \
                             'correspondence_image')
set_structured_light_model_param (StructuredLightModel, 'derivative_sigma', \
                                  Sigma)
get_structured_light_object (DefectImage, StructuredLightModel, \
                             'defect_image')
</pre>
<h2 id="sec_result">结果</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">decode_structured_light_pattern</span><span data-if="c" style="display:none">decode_structured_light_pattern</span><span data-if="cpp" style="display:none">DecodeStructuredLightPattern</span><span data-if="com" style="display:none">DecodeStructuredLightPattern</span><span data-if="dotnet" style="display:none">DecodeStructuredLightPattern</span><span data-if="python" style="display:none">decode_structured_light_pattern</span></code> returns the
value <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if the given parameters are valid. Otherwise, an exception will be
raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="gen_structured_light_pattern.html"><span data-if="hdevelop" style="display:inline">gen_structured_light_pattern</span><span data-if="c" style="display:none">gen_structured_light_pattern</span><span data-if="cpp" style="display:none">GenStructuredLightPattern</span><span data-if="com" style="display:none">GenStructuredLightPattern</span><span data-if="dotnet" style="display:none">GenStructuredLightPattern</span><span data-if="python" style="display:none">gen_structured_light_pattern</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="get_structured_light_object.html"><span data-if="hdevelop" style="display:inline">get_structured_light_object</span><span data-if="c" style="display:none">get_structured_light_object</span><span data-if="cpp" style="display:none">GetStructuredLightObject</span><span data-if="com" style="display:none">GetStructuredLightObject</span><span data-if="dotnet" style="display:none">GetStructuredLightObject</span><span data-if="python" style="display:none">get_structured_light_object</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="create_structured_light_model.html"><span data-if="hdevelop" style="display:inline">create_structured_light_model</span><span data-if="c" style="display:none">create_structured_light_model</span><span data-if="cpp" style="display:none">CreateStructuredLightModel</span><span data-if="com" style="display:none">CreateStructuredLightModel</span><span data-if="dotnet" style="display:none">CreateStructuredLightModel</span><span data-if="python" style="display:none">create_structured_light_model</span></a></code>, 
<code><a href="set_structured_light_model_param.html"><span data-if="hdevelop" style="display:inline">set_structured_light_model_param</span><span data-if="c" style="display:none">set_structured_light_model_param</span><span data-if="cpp" style="display:none">SetStructuredLightModelParam</span><span data-if="com" style="display:none">SetStructuredLightModelParam</span><span data-if="dotnet" style="display:none">SetStructuredLightModelParam</span><span data-if="python" style="display:none">set_structured_light_model_param</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
